﻿#NoEnv
#SingleInstance Force
SendMode Input

; 全局状态变量
global isActive := false      ; 是否激活方向键映射
global waitingForSecondKey := false  ; 是否在等待第二个键
global firstKey := ""         ; 记录第一个键

;-----------------------------
; 监听第一个键（Space）
~Space::
    if (!waitingForSecondKey && WinActive("ahk_exe studio64.exe")) {
        waitingForSecondKey := true
        firstKey := Space
        SetTimer, CheckTimeout, -400  ; 设置400ms超时
    }
return

;-----------------------------
;监听第二个键
~a::
~b::
~c::
~d::
~e::
~m::
~n::
~p::
~q::
~r::
~t::
~u::
~v::
~w::
~x::
~y::
~z::
~`::
~Ctrl::
~Alt::
~Shift::
~Tab::
~Enter::
~Esc::
	if (waitingForSecondKey && firstKey = Space) {
		isActive := false
		ResetState()
	}
    if (isActive) {
        isActive := false
        ToolTip
		ResetState()
    }
return
;-----------------------------

;-----------------------------
; 监听第二个键
~g::
~o::
~k::
~j::
~s::
~i::
~f::
~;::
    if (waitingForSecondKey && firstKey = Space) {
		isActive := true
		ToolTip, h-j-k-l
        ResetState()
    }
return

;-----------------------------
; 超时重置状态
CheckTimeout:
    if (waitingForSecondKey) {
        ToolTip
        ResetState()
    }
return

;-----------------------------
; 重置等待状态
ResetState() {
    global
    waitingForSecondKey := false
    firstKey := ""
    SetTimer, CheckTimeout, Off
}

;-----------------------------
; 方向键映射（仅在激活状态生效）
#If isActive

h::Send {Left}   ; h → 左
j::Send {Down}   ; j → 下
k::Send {Up}     ; k → 上
l::Send {Right}  ; l → 右

#If  ; 结束条件